<?php
namespace app\speech\controller;  // 必须继承于app 第二个是具体的应用名  例 t5/note/tp
use think\Controller;
use think\Request;


//use think\config;


// use think\Db;
class Index extends Controller
{


/**
 * 语音转文字
 * 原始音频保存在note/speech/up
 */
 
    public function index()
    {
    echo'这是http://localhost:8080/47.94.136.51/t5/public/note.php/speech/Index/index';
    Vendor('speech.AipSpeech');
   
    $appid = '14647803';
    $apikey  = 'MpLD7Y9RRo8roTmLhZnqqIoX';
    $secretkey  = 'DK91Gw4W3jO9KpcgXELx9EOrifI3HUoL';
    $client = new \AipSpeech($appid, $apikey, $secretkey);   // 注意反斜杠
    // $client->test();
    // 识别本地文件
    $li = $client->asr(file_get_contents('../note/speech/up/REC20181028102842(00h00m00s-00h00m36s).wav'), 'wav', 16000, array(
    'dev_pid' => 1537,
    ));
     dump($li);
     dump($li['result']['0']);

	$this->index2();
    }
    


    public function index2()
    {
    echo'
    <hr/>
    <pre>
    原始音频保存在note/speech/up
    Vendor(\'speech.AipSpeech\');
    百度 文档 http://ai.baidu.com/docs/#/ASR-Online-PHP-SDK/top
    
    分割软件使用 D:\应用\音频分割\Boilsoft Video Splitter  / VideoSplitter 都分成MP3
    音频格式转换 批量成war文件  D:\应用\格式工厂\FormatFactory  /FormatFactory   wav 采样率 16000 单声道
    $appid = \'14647803\';
    $apikey  = \'MpLD7Y9RRo8roTmLhZnqqIoX\';
    $secretkey  = \'DK91Gw4W3jO9KpcgXELx9EOrifI3HUoL\';
    $client = new \AipSpeech($appid, $apikey, $secretkey);   // 注意反斜杠
    // $client->test();
    // 识别本地文件
    $li = $client->asr(file_get_contents(\'../note/speech/up/95187_093439.wav\'), \'wav\', 16000, array(
    \'dev_pid\' => 1537,
    ));
    dump($li);
    dump($li[\'result\'][\'0\']);
    </pre>
    ';
	
    }
    /**
    * 语音转文字
    * 被index4 调用
    * 原始音频保存在note/speech/up
    * 保存到日志中 
     * $value 文件名
     * $n    第几段
     * $li['result']['0'] 返回的文字信息
     * $li['err_no'] 返回的出错编号
     */
    public function index3($value,$n)
    {
    // echo'这是http://localhost:8080/47.94.136.51/t5/public/note.php/speech/Index/index';
    Vendor('speech.AipSpeech');
   
    $appid = '14647803';
    $apikey  = 'MpLD7Y9RRo8roTmLhZnqqIoX';
    $secretkey  = 'DK91Gw4W3jO9KpcgXELx9EOrifI3HUoL';
    $client = new \AipSpeech($appid, $apikey, $secretkey);   // 注意反斜杠
    // $client->test();
    // 识别本地文件
    $file = "../note/speech/up/$value";
    // dump($file);
    // 向百度发送请求 百度返回的内容存入$li
    $li = $client->asr(file_get_contents($file), 'wav', 16000, array(
    'dev_pid' => 1936,
    ));
     // dump($li);
    /// dump($li['result']['0']);
    // 文字内容（出错信息） 文件名 第几段 存入日志
    if($li['err_msg'] == 'success.'){
        $this->logger($li['result']['0'],$value,$n);
        echo $n.'完成<br/>'; }else{
             $this->logger($li['err_no'],$value,$n);
        echo $n.'完成 出错<br/>';
        }
	
    }
    
    public function logger($content,$value,$n){
        
    
        $log="../note/speech/log.txt";
    
       file_put_contents($log,date('H:i:s')."第".$n."篇".$value.PHP_EOL." ".$content.PHP_EOL,FILE_APPEND); 
    
    }

    /**
     * 中控
     * 
     * http://localhost:8080/47.94.136.51/t5/public/note.php/speech/Index/index4
     * $value 文件名
     * $n    第几段
     */
	public function index4(){
        set_time_limit(0);
        //获得所有文件名
        $n = 0;
        $path = '../note/speech/up';
        $dir = scandir($path);  //把目录存成数组
        // dump($dir);
        // $dir = array('this','is','an','example');
        //用正则 删除不是wav文件的项 
        $pre = '/\b(wav)\b/';  // 匹配 wav
        $res = preg_grep($pre,$dir);
        //dump($res);
        //下面遍历所有文件名
        foreach($res as $value){
             echo  '第'.$n.'段'.$value.'开始<br/>';
               $n = $n+1;
            $this->index3($value,$n);  // 语音转文字 
			}
        //上面 foreach 结束
    }


    public function index5(){
    echo'
    <hr/>
    <pre>
    操作步骤：
    一： 分割软件使用 D:\应用\音频分割\Boilsoft Video Splitter  / VideoSplitter 都分成MP3 每段要小于60s   
    二： 音频格式转换 批量成war文件  使用 D:\应用\格式工厂\FormatFactory  /FormatFactory   wav 采样率 16000 单声道
    三： 把文件存入/note/speech/up 里
    四： 调用  http://localhost:8080/47.94.136.51/t5/public/note.php/speech/Index/index4 
               http://www.hyhthjk.com.cn/note.php/speech/Index/index4
               页面连接会长时间旋转，不要动
    五： 结束后 查看日志
    百度 文档 http://ai.baidu.com/docs/#/ASR-Online-PHP-SDK/top

    </pre>
    ';
    }
  


    }

